Nakama Advanced: Events
これを読んだら終わり
Events
クライアントからサーバーにデータを送って処理させる方法の一つ
広告、ゲーム内課金、などなど
サードパーティサービスの必要とする情報だけ送らせて、処理はサーバーでする。
クライアントが様々なコードベースで実装される場合(Swift, Kotlin, Js, gdscript) 、サーバーに転嫁することでSDKコードの量を減らすことができる。
クライアント -> 3rdパーティーへのネットワークトラフィックを減らす (ゲームサーバー -> 3rdparty api へ一本化)
統合のための開発期間と、メンテナンスコストを削減
あとはゲームのアナリティクスとか
Generate Event
Send
v2/event へPOST
code: .sh
curl -vvv -H "Authorization: Bearer $SESSION" \
event.
name
properties: 任意のKV
Create Event
サーバーコードでイベントを生成(クライアントでPOSTするのと同等)
code: .sh
local nk = require("nakama")
local properties = {
my_key = "my_value"
}
local timestamp = nk.time
local external = false
nk.event("event_name", properties, timestamp, external)
after_hookを使ってイベントを生成することもできる
Process Events
nk.register_eventを使って登録する
(何故かGoコードしかない)
code: .go
func processEvent(ctx context.Context, logger runtime.Logger, evt *api.Event) {
switch evt.GetName() {
case "account_updated":
logger.Debug("process evt: %+v", evt)
// Send event to an analytics service.
default:
logger.Error("unrecognised evt: %+v", evt)
}
}
// initializer runtime.Initializer
if err := initializer.RegisterEvent(processEvent); err != nil {
return err
}
実際のところは、switch文使って更にハンドラーで分けると良さそう
Built in Event
SessionStartとSessionEndもEventだが、他のイベントとは区別される(専用のhandler登録関数)
Settings
初期値
多分変えられる
runtime.event_queue_size: 65535
runtime.event_queue_workers: 8